home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / GameSprocket SDKs / DrawSprocket_SDK / DrawSprocket Release Notes < prev    next >
Encoding:
Text File  |  1999-10-29  |  11.2 KB  |  252 lines  |  [ttro/ttxt]

  1. DrawSprocket 1.7
  2. Release Notes
  3. --------------------
  4.  
  5. For a detailed list of changes from the previous version, please read the
  6. change list at the end of this document.
  7.  
  8. Please report all bugs using the bug reporter on Apple Developer Connection:
  9.  
  10. <http://developer.apple.com/bugreporter/index.html>
  11.  
  12. Release Components
  13. ------------------    
  14.   DrawSprocket Release Notes                  - this file    
  15.   DrawSprocket API v1.1 ERS.pdf            - API documentation
  16.   DSp Debugging Tips                                - tips for debugging DSp programs
  17.     
  18.   Interfaces&Libraries                           - headers and link libraries
  19.  
  20.   DrawSprocketLib                                      - release version of the library
  21.   DrawSprocketDebugLib                           - debugging version of the library
  22.     
  23. WARNING: don't place both the debugging and non-debugging versions of the
  24. library in the search path or you will not be sure which version you are
  25. using.
  26.  
  27.  
  28. Dependencies
  29. ------------
  30.  
  31. DrawSprocket 1.7 requires Mac OS 8.1 or later.
  32.  
  33. DrawSprocket requires version 3.2 or later of the Universal Headers -- You can find them with the
  34. latest version of your development environment, Apple's WWW and FTP sites or the
  35. developer CD ROMs.
  36.  
  37.  
  38. Compatibility with Previous Releases
  39. ------------------------------------
  40.  
  41. DrawSprocket 1.7 is now PowerPC-only.  It is fully compatible with all previous
  42. PowerPC apps which used DrawSprocket.
  43.  
  44. Changes from 1.1.4 to 1.7
  45.  
  46. Bug Fixes:
  47.   -  There was a race condition for 3-page contexts which could cause a crash when
  48.                     you inactivated the context.  This has been fixed.
  49.  
  50. Changes:
  51.   -  DSpGetVersion() has now been added.  It returns a structure of type NumVersion.
  52.  
  53.   -  DSpGetCurrentContext() has been added.  Given a display ID it returns the context
  54.      which matches the state of the current display geometry.
  55.  
  56.   -  Added DSpFindBestContextOnDisplayID().  This is the same as DSpFindBestContext() but
  57.      only searches the specified display.
  58.  
  59.   -  Added two other new calls: DSpContext_Queue() and DSpContext_Switch().  After reserving
  60.      the main context for a display you can then use DSpContext_Queue() to let DrawSprocket
  61.      know that you will want to switch to other display modes.  You can then use
  62.      DSpContext_Switch() to directly switch between the two modes without having to inactivate
  63.      the parent context and reset to the default display mode first.  See the SprocketInvaders
  64.      sample code for an example of how these new calls should be used.
  65.  
  66. Changes from 1.1.3 to 1.1.4
  67. ---------------------------
  68.  
  69. Bug Fixes:
  70.   -  Previous versions of DrawSprocket would call the Display Manager to change the display
  71.      mode even if the target mode and current mode were the same.  This would cause a
  72.      flash of gray across the screen.  This is now fixed.
  73.  
  74.   -  Previous versions of DrawSprocket would change the gamma table on some video cards,
  75.      resulting in "Custom Gamma" appearing in the Monitors and Sounds control panel.
  76.      This has been fixed.
  77.       
  78.   -  DrawSprocket now includes a ('dlgx', 128) resource so that it does not conflict with
  79.      application dialogs.
  80.  
  81.   -  If you passed in a color to DSpContext_FadeGamma with RGB values that were smaller
  82.      than the size of the table (generally 256), then DrawSprocket would fade to an incorrect
  83.      color. Additional changes were also made to support video hardware with a gamma
  84.      channel size of greater than 8 bits.
  85.  
  86.   -  A few other gamma table changes were made. This is a good place to clarify the usage
  87.      of bias colors in DSpContext_FadeGamma.
  88.       *  If you don't pass in a bias color, then the smallest valid value is 0%, which
  89.          would be all black.  100% represents the normal gamma setting of the monitor.
  90.             *  If you pass in a bias color, then -100% represents black, 0% represents the bias
  91.          color and 100% represents the normal gamma settings of the monitor.  Other values
  92.          are interpolated based on these points.  For example, 50% would be half-way between
  93.          the bias color and the regular gamma of the monitor.
  94.       *  Values above 100% are permitted, but will peg to the maximum gamma settings. 
  95.     
  96.      -  Previous versions of DrawSprocket would call SetWRefCon on a CGrafPort.
  97.       
  98.      -  If you paused a page-flipping context, there was a 50/50 chance that you'd put
  99.      DrawSprocket into a state where it would lock up within two swaps after you unpaused
  100.      the context.  This has been corrected.
  101.       
  102.      -  When you pause and resume a context, the front page's visRgn was not being reset
  103.      properly. This meant that apps using QuickDraw would no longer be able to draw to the
  104.      menubar portion of the screen after the context was resumed.  This only affected
  105.      applications using page flipping or direct access to the front buffer.
  106.       
  107.   -  Under extremely low-memory conditions, it was possible for DrawSprocket to fail to
  108.      allocate a CGrafPort, and then pass a NULL pointer to CloseCPort, causing the machine
  109.      to die an agonizing death.  While applications should be checking for low memory
  110.      conditions (see Inside Mac: Memory), DrawSprocket will no longer call CloseCPort on
  111.               a NULL pointer.
  112.       
  113.   -  If you attempted to reserve a context with a pixel depth of less than 8 bits per pixel,
  114.      DrawSprocket would calculate rowBytes improperly.
  115.       
  116.  
  117. Changes:
  118.   -  The order in which DrawSprocket will pick resolutions has been modified. If DrawSprocket
  119.      has two contexts that both meet the required attributes, this is the order in which
  120.                  DrawSprocket prioritizes its selection:
  121.       
  122.      *  Choose the context with the smallest dimensions
  123.            *  Choose a context in the preferred depth over any other depth
  124.      *  Choose a context with the smallest depth
  125.      *  Always choose a safe context on the main monitor, or the current mode on the main
  126.         monitor, over a context on any other monitor.
  127.      *  Choose a context that is the current mode of a monitor over any other context.
  128.      *  Choose a safe mode for a monitor over any unsafe mode
  129.      *  If both contexts are safe, choose the one with the higher refresh rate
  130.      *  If only one of the contexts is on the main device, choose it
  131.  
  132.     Obviously, many things on this list don't apply if you can DSpUserSelectContext, which
  133.     of course, you *should* be doing.
  134.  
  135.     -  Additional error handling code was added it to catch errors returned by the Display
  136.        Manager.
  137.  
  138.     -  Additional debug asserts were added to catch application errors.  Please test your code.
  139.  
  140.  -  GoggleSprocket is no longer a supported product.  Starting with this version of
  141.     DrawSprocket, any attempt to find or reserve a stereo context will fail with an error.
  142.     
  143.  
  144. Known Issues:
  145.  
  146.   -  DrawSprocket does not pad rowBytes, or enforce it to be any particular multiple.  
  147.      However, its blitter functions expect rowBytes to be a multiple of 8 (PPC) or 16 (68K).
  148.      If you allocate an alt-buffer, be sure to choose your bounds appropriately.
  149.       
  150.   -  DrawSprocket can mess up the location of the Application Switcher in 8.5.
  151.     
  152.   -  If you are using a 7500/7600/8500/8600 machine, you must reset the gamma whenever you
  153.      activate or deactivate the context.  Doing a gamma fade is sufficient to do this.  If
  154.      you do not do this, the color tables aren't reset properly, and the screen will be a
  155.      flat grey.  In addition, pausing a page-flip context on one of those machines will
  156.      result in the screen being filled with garbage (VRAM is reorganized).
  157.       
  158.  
  159. Changes from 1.1.2 to 1.1.3
  160. ---------------------------
  161.  
  162. Bug Fixes:
  163.     
  164.   -  DSp 1.1.2 would crash when you called the 68K versions of the blit calls.
  165.   -  Removed the load delay when DSp is starting up.  Thanx to Kent Miller for that!
  166.         
  167. Changes:
  168.     
  169.   -  You can now call DSpUserSelectContext() on a single-monitor system when you are in
  170.      debug mode.  This is so that you can test your DSpUSC() code on a single monitor system.
  171.  
  172.  
  173.  
  174. Changes from 1.1 to 1.1.2
  175. -------------------------
  176.  
  177. I just wanted to take a moment and mention the great assistance that was provided by
  178. Kirk Sumner of MacSoft and Chris Capener of Apple Computer for their assistance in
  179. this release of DrawSprocket.  Without them abusing the heck out of it I never would
  180. have found all the GetFrontBuffer and multiple monitor bugs that have been plaguing
  181. the last several release.  Gentlemen, my infinite thanx.
  182.  
  183.  
  184. Bug Fixes:
  185.  
  186.   -  there was a bug in SetCLUTEntries that would update the colors improperly
  187.      if you didn't start updating at color 0.
  188.           
  189.   -  removed an assert in the debug library that caused problems on some video
  190.      cards.
  191.  
  192.   -  there was a problem where if a context was placed on a display that did not
  193.      physically support the params, and if that display wasn't the main monitor
  194.      then QuickDraw calls wouldn't work on those buffers.  This is fixed.
  195.  
  196.   -  the new call DSpContext_GetFrontBuffer() had a bug where the CGrafPort
  197.      representation of the front-buffer was invalid if it wasn't on the main
  198.      monitor. You could write directly into the pixmap but you couldn't use
  199.      QuickDraw calls.  This is now fixed.
  200.  
  201.   -  The above fix brought out a bunch of other bugs related to multiple-monitor
  202.      usage. These are fixed as well.
  203.     
  204.   -  removed DebugStr()'s that were left in the non-debug build.
  205.         
  206.   -  A CGrafPtr was left dangling from OpenCPort(), causing crashes on some systems
  207.      (when used with OpenDoc, most noticeably).
  208.           
  209.   -  a page swap queued immediately before a context pause or inactivation would
  210.      still occur after the state change.  Now all pending swaps are completed before
  211.      the state change.
  212.           
  213.   -  requesting an alt buffer with rowbytes == width would not work correctly if the
  214.      width was smaller than the display width.
  215.          
  216.         -  fixed some null-pointer dereferences.
  217.         
  218.         -  the rightmost portion of the menu bar was not being re-added to
  219.            the gray region after a context deactivation, when the context resolution
  220.            was smaller than the desktop resolution.  The control strip sometimes went
  221.            under the menu bar on context deactivation because of this.
  222.         
  223.         -  duplicate buffer release when closing down a page flipped context.
  224.         
  225.         -  was not correctly disposing of alt buffers, causing duplicate
  226.            releases.
  227.  
  228.         -  fixed a bug where invalidating the entire underlay buffer only redrew the
  229.            back buffer's dirty rects instead of the entire buffer.
  230.         
  231.         -  there was an anomalous condition involved with setting a page count of 1 and
  232.            page-flipping active on machines that have page-flipping.  In essence, you'd
  233.            always be waiting for page 0 to become free and it never would.  If you have
  234.            the page-flipping bit turned on and the hardware supports it the page-count
  235.            will now always be set to a minimum of two.
  236.         
  237. Changes:
  238.  
  239.         -  DrawSprocket is now weak-linked against the Display Manager.  If DM is
  240.            not present DrawSprocket _will_ load but the call to DSpStartup() will fail
  241.            and return an error code.
  242.     
  243.         -  removed some timing code in the slot VBL task to improve
  244.            performance that was degraded in 1.1.
  245.           
  246.         -  Several changes to the user select context dialog.  You can now double-click
  247.            on the rect for a monitor to select it and continue.  You can now hit ESC, or
  248.            Command-period to cancel.  You can also hit tab or space to cycle through the
  249.            monitors.
  250.           
  251.         -  New call - DSpContext_GetFrontBuffer().  This gives you a CGrafPtr to access the
  252.            front buffer of your DSp context.  This was previously a private call.